import nodemailer from "nodemailer"

export function generateRandomKey() {
    // 时间格式化
    let year = new Date().getFullYear();
    let month = (new Date().getMonth() + 1) < 10 ? '0' + (new Date().getMonth() + 1) : new Date().getMonth() + 1;
    let day = new Date().getDate() < 10 ? '0' + new Date().getDate() : new Date().getDate();
    let hour = new Date().getHours() < 10 ? '0' + new Date().getHours() : new Date().getHours();
    let minute = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes();
    let second = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getSeconds();
    let currentTime = year + "-" + month + "-" + day + "-" + hour + '-' + minute + '-' + second;
    const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    let result = '';
    const charactersLength = characters.length;
    for (let i = 0; i < 8; i++) {
        result += characters.charAt(Math.floor(Math.random() * charactersLength));
    }
    return currentTime + result;
}

export function isValidEmail(email: string) {
    const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(String(email).toLowerCase());
}


// 发送验证码到邮箱的函数  
export async function sendVerificationCodeToEmail(username: string, code: string) {
    // 邮件传输器配置（使用SMTP）  
    const transporter = nodemailer.createTransport({
        service: 'QQ', // 使用Gmail或其他SMTP服务提供商  
        auth: {
            user: 'it_hzm@qq.com', // 您的电子邮件地址  
            pass: 'oezaulhorikrddid' // 您的电子邮件密码或应用特定密码（如果适用）  
        }
    });
    // 设置邮件内容  
    const mailOptions = {
        from: 'it_hzm@qq.com', // 发件人地址  
        to: username, // 收件人地址（这里我们假设username是有效的电子邮件地址）  
        subject: '验证码', // 邮件主题  
        text: `您的验证码是：【${code}】,打死都不能告诉别人！！！` // 邮件内容  
    };

    // 发送邮件  
    try {
        await transporter.sendMail(mailOptions);
        return true;
    } catch (error) {
        return false
    }
}



